<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: lzy
  Date: 2018/10/13
  Time: 11:30
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Input</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/testConversionServiceConverter" method="post">
    <%--lastName-email-gender-department.id例如：GG-gg@1132.com-0-105--%>
    employee:&nbsp;<input type="text" name="employee"/>
    <input type="submit" value="Submit">
</form>
<hr/>
<%--
    1.WHY使用form标签？
    可以更快速的开发出表单标签，而且可以更方便的进行表单的回显。
    2.注意：
    可以通过modelAttribute属性指定绑定的模型属性，若没有指定该属性，则默认从request域对象中读取command的表单bean，如果该属性也不存在，则会发生错误。
--%>
<form:form action="${pageContext.request.contextPath}/emp" method="post" modelAttribute="employee">

    <%--显示错误消息，如果path里面配置的是*，表示显示所有的错误消息--%>
    <form:errors path="*"/><br/><br/>

    <c:if test="${employee.id == null}">
        <%--path属性对应html表单的name属性--%>
        lastName:<form:input path="lastName"/>&nbsp;<font color="red"><form:errors path="lastName"/></font>
        <br><br/>
    </c:if>
    <c:if test="${employee.id != null}">
        <form:hidden path="id"/>
        <%--对于_method不能使用form:hidden标签，因为modelAttribute对应的bean中没有_method这个属性应该使用<input type="hidden" />--%>
        <input type="hidden" name="_method" value="PUT">
    </c:if>

    Email:<form:input path="email"/>&nbsp;<font color="red"><form:errors path="email"/></font><br/><br/>
    <%
        Map<String, String> genders = new HashMap<>();
        genders.put("1", "Male");
        genders.put("0", "Female");

        request.setAttribute("genders", genders);
    %>
    Gender:<br/><br/><form:radiobuttons path="gender" items="${genders}" delimiter="<br><br>"/><br/><br/>
    Department:<form:select path="department.id" items="${departments}" itemLabel="departmentName" itemValue="id"/><br/><br/>
    <%--
        1.数据类型转换 string<-->date
        2.数据类型格式化
        3.数据校验
        3.1）如何校验？注解
        ①使用JSR303验证标准
        ②加入hibernate validator验证框架
        ③在SpringMVC配置文件中添加<mvc:annotation-driven/>
        ④需要在bean的属性上添加对应的注解
        ⑤在目标方法bean类型的前面添加@Valid注解
        3.2）验证出错转向到哪一个页面？
        注意：需校验的Bean对象和其绑定结果对象或错误对象是成对出现的，它们之间不允许声明其他的入参
        3.3）错误消息？如何显示，如何把错误消息进行国际化
    --%>
    Birth:<form:input path="birth"/>&nbsp;<font color="red"><form:errors path="birth"/></font><br/><br/>
    Salary:<form:input path="salary"/><br/><br/>
    <input type="submit" value="Submit">
</form:form>
</body>
</html>
